package com.tech.algorithm.sort;

import java.util.Arrays;

/**
 * @Description:
 * @Author: zl
 * @Date: 2019/8/1 11:29
 */
public class ChooseSort {

    public static void selectionSort(int[] arr) {
        int min;
        int max;
        int count = arr.length;
        for (int i = 0; i < count; i++) {
            // 初始化未排序序列中最小数据数组下标
            min = i;
            // 初始化未排序序列中最大数据数组下标
            max = count - 1;
            for (int j = i; j < count; j++) {
                // 在未排序元素中继续寻找最小元素，并保存其下标
                if (arr[min] >= arr[j]) {
                    min = j;
                }
                // 在未排序元素中继续寻找最大元素，并保存其下标
                if (arr[max] <= arr[j]) {
                    max = j;
                }
            }
            // 将未排序列中最小元素放到已排序列头
            if (min != i) {
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
            // 将未排序列中最大元素放到已排序列尾
            if (max != count - 1) {
                int temp = arr[count - 1];
                arr[count - 1] = arr[max];
                arr[max] = temp;
            }
            count--;
        }
        System.out.println(Arrays.toString(arr));
    }

    public static void main(String[] args) {
        selectionSort(new int[]{3,2,3,1,5,0,-1});
    }
}
